-- rate_limit.lua
local key = KEYS[1]
local limit = tonumber(ARGV[1])
local period = tonumber(ARGV[2])

-- 获取当前计数器值
local current = redis.call('INCR', key)

-- 如果是第一次访问，设置过期时间
if current == 1 then
    redis.call('EXPIRE', key, period)
end

-- 检查是否超过限制
if current > limit then
    local remainingTime = redis.call('TTL', key)
    return remainingTime -- 返回剩余过期时间
else
    return 0 -- 返回 0 表示未超过限制
end